<?php
//这个是用来调用微信jssdk的，做成基类继承了方便调用
namespace Home\Controller;
use Think\Controller;

class CommonController extends Controller {
<<<<<<< .mine
    //  public function _initialize()
    // {
    //     $jssdk = new JSSDK("wx119775cb5528ce74", "e85cdf265b0ba30eb58643e4f5db758c");
    //     $signPackage = $jssdk->GetSignPackage();
    //     $this->assign('signPackage',$signPackage);
    // }
=======
   //设置appId和appSecret为私有属性以后需要用到
    private $appId="wx119775cb5528ce74";
    private $appSecret="e85cdf265b0ba30eb58643e4f5db758c";
     public function _initialize()
    {
        $jssdk = new JSSDK("wx119775cb5528ce74", "e85cdf265b0ba30eb58643e4f5db758c");
        $signPackage = $jssdk->GetSignPackage();
        $this->assign('signPackage',$signPackage);
    }
>>>>>>> .r2005
    //根据openid获取用户信息
    public function getinfobyopenid($openid){
        //membercache初始化
        $mem = memcache_init();
        // //获取存在其中的access_token值
        $access_token = $mem->get($this->appSecret);
       
        // $wechat->replyText($openid);
        $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$openid&lang=zh_CN";
        $output = https_request($url);
        //把得到的用户信息字符串变成对象
        $userdata = json_decode($output);
        return $userdata;
    }
}


//使用membercache来缓存getJsApiTicket
// class JSSDK {
   
//   private $appId;
//   private $appSecret;
//   public function __construct($appId, $appSecret) {
//     $this->appId = $appId;
//     $this->appSecret = $appSecret;
//   }
//   public function getSignPackage() {
//     $jsapiTicket = $this->getJsApiTicket();
//     $url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
//     $timestamp = time();
//     $nonceStr = $this->createNonceStr();
//     // 这里参数的顺序要按照 key 值 ASCII 码升序排序
//     $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
//     $signature = sha1($string);
//     $signPackage = array(
//       "jsapiTicket"=>$jsapiTicket,//测试用。到时删掉
//       "appId"     => $this->appId,
//       "nonceStr"  => $nonceStr,
//       "timestamp" => $timestamp,
//       "url"       => $url,
//       "signature" => $signature,
//       "rawString" => $string
//     );
//     return $signPackage; 
//   }
//   private function createNonceStr($length = 16) {
//     $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
//     $str = "";
//     for ($i = 0; $i < $length; $i++) {
//       $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
//     }
//     return $str;
//   }
//   private function getJsApiTicket() {
//     // jsapi_ticket 应该全局存储与更新，以下代码以写入到文件中做示例
      
//       if (isset($_SERVER['HTTP_APPNAME'])){        //SAE环境，需要开通memcache
//             $mem = memcache_init();
//         }else {                                        //本地环境，需已安装memcache
//             $mem = new Memcache;
//             $mem->connect('localhost', 11211) or die ("Could not connect");
//         }
      
      
//        $ticket =  $mem->get($this->appid);
      
    
      
      
//     if (!isset($ticket) || empty($ticket)) {
        
//       $accessToken = $this->getAccessToken();
        
//       $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
//       $res = json_decode($this->httpGet($url));
//       $ticket = $res->ticket;
//       if ($ticket) {
        
          
<<<<<<< .mine
//         $mem->set($this->appid, $ticket, 0, 7200);
=======
        $mem->set($this->appid, $ticket, 0, 3600);
>>>>>>> .r2005
          
        
//       }
//     } else {
//       $ticket =  $mem->get($this->appid);
//     }
//     return $ticket;
//   }
//   private function getAccessToken() {
//     // access_token 应该全局存储与更新，以下代码以写入到文件中做示例
      
//       if (isset($_SERVER['HTTP_APPNAME'])){        //SAE环境，需要开通memcache
//             $mem = memcache_init();
//         }else {                                        //本地环境，需已安装memcache
//             $mem = new Memcache;
//             $mem->connect('localhost', 11211) or die ("Could not connect");
//         }
      
//      $access_token = $mem->get($this->appSecret); 
    
//     if (!isset($access_token) || empty($access_token)) {
//       $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
//       $res = json_decode($this->httpGet($url));
//       $access_token = $res->access_token;
//       if ($access_token) {
        
//          $mem->set($this->appSecret, $access_token, 0, 3600); 
          
//       }
//     } else {
//       $access_token = $mem->get($this->appSecret);
//     }
//     return $access_token;
//   }
//   private function httpGet($url) {
//     $curl = curl_init();
//     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//     curl_setopt($curl, CURLOPT_TIMEOUT, 500);
//     curl_setopt($curl, CURLOPT_URL, $url);
//     $res = curl_exec($curl);
//     curl_close($curl);
//     return $res;
//   }
    
// }






//微信方法
// class JSSDK {
//     private $appId;
//     private $appSecret;
//     public function __construct($appId, $appSecret) {
//       $this->appId = $appId;
//       $this->appSecret = $appSecret;
//     }
//     public function getSignPackage() {
//       $jsapiTicket = $this->getJsApiTicket();
//       $url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
//       $timestamp = time();
//       $nonceStr = $this->createNonceStr();
//       // 这里参数的顺序要按照 key 值 ASCII 码升序排序
//       $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
//       $signature = sha1($string);
//       $signPackage = array(
//         "appId"     => $this->appId,
//         "nonceStr"  => $nonceStr,
//         "timestamp" => $timestamp,
//         "url"       => $url,
//         "signature" => $signature,
//         "rawString" => $string
//       );
//       return $signPackage; 
//     }
//     private function createNonceStr($length = 16) {
//       $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
//       $str = "";
//       for ($i = 0; $i < $length; $i++) {
//         $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
//       }
//       return $str;
//     }
//     private function getJsApiTicket() {
//       // jsapi_ticket 应该全局存储与更新，以下代码以写入到文件中做示例
//       $data = json_decode(file_get_contents("jsapi_ticket.json"));
//       if ($data->expire_time < time()) {
//         $accessToken = $this->getAccessToken();
//         $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
//         $res = json_decode($this->httpGet($url));
//         $ticket = $res->ticket;
//         if ($ticket) {
//           $data->expire_time = time() + 7000;
//           $data->jsapi_ticket = $ticket;
//           $fp = fopen("jsapi_ticket.json", "w");
//           fwrite($fp, json_encode($data));
//           fclose($fp);
//         }
//       } else {
//         $ticket = $data->jsapi_ticket;
//       }
//       return $ticket;
//     }
//     private function getAccessToken() {
//       // access_token 应该全局存储与更新，以下代码以写入到文件中做示例
//       $data = json_decode(file_get_contents("access_token.json"));
//       if ($data->expire_time < time()) {
//         $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
//         $res = json_decode($this->httpGet($url));
//         $access_token = $res->access_token;
//         if ($access_token) {
//           $data->expire_time = time() + 7000;
//           $data->access_token = $access_token;
//           $fp = fopen("access_token.json", "w");
//           fwrite($fp, json_encode($data));
//           fclose($fp);
//         }
//       } else {
//         $access_token = $data->access_token;
//       }
//       return $access_token;
//     }
//     private function httpGet($url) {
//       $curl = curl_init();
//       curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//       curl_setopt($curl, CURLOPT_TIMEOUT, 500);
//       curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
//       curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
//       curl_setopt($curl, CURLOPT_URL, $url);
//       $res = curl_exec($curl);
//       curl_close($curl);
//       return $res;
//     }
//}